package com.baidu.day02;

import java.util.ArrayList;
import java.util.List;

/**
 * Create with Intellij IDEA
 *
 * @Author Q
 * @date 2021/11/23/8:48
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        //多态的应用
        //1. 面向接口编程
        //2. 面向父类编程

        //面向接口编程的特点
        //a. 对象的编译时类型可以写成接口,对象的运行时类型可以写成这个接口的任意一个实现类
        //b. 方法的返回类型写成接口,方法体的返回结果可以是这个接口的任意一个实现类
        //c. 方法的参数列表中的参数是接口,可以传入这个接口的任意一个是吸纳类

        //面向父类编程的特点
        //a. 对象的编译是类型写成父类,对象的运行时类型写成子类
        //b. 方法的返回类型写成父类,方法体的返回结果写成子类
        //c. 方法的参数写成父类,方法的调用可以传入这个父类的任意一个子类对象
        //java.lang.Object是所有对象类型的父类,根类,基类,超类
        //一个类如果没有使用extends来表示它的父类,那么这个类默认都是直接继承java.lang.Object

        //如何构建一个对象?
        //比如: 类型 对象名 = new 类型();// Date now = new Date();
        //String str = new String("abc");

        //编译时类型 对象名 = new 运行时类型();

        //jdk5.x之前的写法 - 类型不安全的集合容器
        //这个集合中可以存放任意类型的数据
        List list = new ArrayList();
        list.add("java");
        //所有的对象类型的默认值都是为null
        list.add(null);
        //list.add(10);
        list.add(100);//int->Integer
        list.add("java");
        System.out.println(list);

        //String s = (String) list.get(2);// alter+enter

        //TODO... 为什么不安全???

        //JDk5.x以后开始引入类泛型的概念
        //泛型只能使用对象类型
        //每个基本类型都对应一个包装类型
        //int->Integer
        //byte->Byte  short->Short  long->Long  char->Character boolean->Boolean
        //类型安全的集合容器
        //一旦引入了泛型,那么这个集合中可以存放的数据的类型就会在编译期间确定下来了
        List<String> strList = new ArrayList<String>();
        strList.add("python");
        strList.add(null);
        strList.add("web");
        strList.add("springboot");
        strList.add("mybatis");


        //可以根据下标来获取集合中的具体的数据
        String result = strList.get(2);
        System.out.println(result);

        System.out.println(strList);

        //jdk7.x及其以后
        List<Long> longList = new ArrayList<>();
        longList.add(100L);
        longList.add(100L);
        longList.add(100L);
        longList.add(100L);
        System.out.println(longList);
        //int->long
        //int->Integer
        //int->Long
        //long->Long

    }
}
